2 PRINTCHR$(147)"WOULD YOU LIKE INSTRUCTIONS (Y/N)? 4 [161] A$: [139] A$[179][177] "Y" [175] A$[179][177]"N" [167] 4 6 [139] A$[178]"N" [167] 70 8 [153]"INSTRUCTIONS ON SCREEN OR PRINTER (S/P)? 10 GET B$: IF B$<> "S" AND B$<>"P" THEN 10 12 IF B$="S"THEN D=3 14 IF B$="P" THEN D=4 16 OPEN D,D 18 PRINT#D," 20 [152]D,"CHUMMY CHECKERS BY TONY BRANTNER 24 PRINT#D,"RUN IT RIGHT: C-64; JOYSTICK 26 [152]D," 28 PRINT#D,"IN THIS GAME, AS IN TRADITIONAL 30 [152]D,"CHECKERS, PLAYERS MUST CLEAR EACH 32 PRINT#D,"OTHER'S PIECES FROM THE GAME BY JUMPING 34 [152]D,"THEM. YOU CAN PLAY AGAINST ANOTHER 36 PRINT#D,"PERSON, AGAINST THE COMPUTER, OR WATCH 38 [152]D,"THE COMPUTER PLAY ITSELF. A SINGLE JOY- 40 PRINT#D,"STICK IN PORT 2 CONTROLS BOTH SIDES. 42 [152]D," 44 PRINT#D,"MOVING A PIECE INVOLVES TWO STEPS. 46 [152]D,"FIRST, USE THE JOYSTICK TO POSITION THE 48 PRINT#D,"FLASHING YELLOW CURSOR OVER THE PIECE 50 [152]D,"YOU WANT TO MOVE AND PRESS THE FIRE- 52 PRINT#D,"BUTTON. WHEN A PIECE REACHES YOUR 54 [152]D,"OPPONENT'S BACK ROW IT IS KINGED, AND 56 PRINT#D,"CAN MOVE EITHER FORWARD OR BACKWARD. 58 [152]D,"UNTIL THEN, IT CAN ONLY MOVE FORWARD. 60 PRINT#D," 62 [152]D,"ENTER ZERO AS THE NUMBER OF PLAYERS TO 64 PRINT#D,"PUT THE COMPUTER IN AUTO-PLAY MODE. F1 66 [152]D,"ENDS THE GAME. 68 CLOSED 70 PRINT"PRESS ANY KEY TO BEGIN THE PROGRAM..." 72 GET E$:IF E$="" THEN 72 74 CLR 76 REM---CHECKERS 78 POKE52,56:POKE56,56:CLR 80 GOSUB372 82 V=53248:S1=54272:S2=S1+7:SC=1024:TC=646:A=RND(-TI) 84 FORA=1TO38:SP$=SP$+CHR$(32):NEXT 86 DIM BD(63),CH(1),MV$(1),D(1,3),TL(1),PL(1) 88 FORZ=0TO63:BD(Z)=SC+168+INT(Z/8)*80+(ZAND7)*3:NEXT 90 CH(0)=163:CH(1)=171 92 MV$(0)=LEFT$(SP$,4):MV$(1)="MOVE" 94 D(0,0)=7:D(0,1)=9:D(0,2)=-7:D(0,3)=-9 96 FORA=0TO3:D(1,A)=-D(0,A):NEXT 98 POKEV+39,7:POKEV+40,2 100 POKE2040,13:POKE2041,14 102 FORA=S1TOS1+24:POKEA,0:NEXT 104 POKES1+1,37:POKES1+5,9 106 POKES2+1,5:POKES2+5,8:POKES2+6,240:POKES1+24,15 108 GOSUB278 110 P1=0 112 REM---MAIN 114 P2=P1:P1=1-P1:M=0 116 CY=10:CX=2:GOSUB354:POKETC,1:PRINTMV$(P1) 118 CX=34:GOSUB354:POKETC,0:PRINTMV$(P2) 120 IFPL(P1)THEN144 122 REM---COMPUTER 124 M1=1:FORZZ=0TO63 126 IFPEEK(BD(ZZ))=CH(P1)THENGOSUB242 128 NEXT:IFM1=1THEN192 130 IFM1<6THENGOSUB228:GOTO138 132 GOSUB220:IFTL(P2)=0THEN192 134 M1=1:ZZ=QD:GOSUB242 136 IFM1>=6THEN132 138 GETA$:IFA$=CHR$(133)THEN192 140 GOTO114 142 REM---PLAYER 144 R=P1*7:C=R:POKEV+3,0 146 GOSUB200:IFA$=CHR$(133)THEN192 148 IFPEEK(L)<>CH(P1)THEN146 150 K=-(PEEK(L+1)=166) 152 POKEV+2,PEEK(V):POKEV+16,(PEEK(V+16)AND1)*3:POKEV+3,PEEK(V+1) 154 RF=R:CF=C:LF=L 156 GOSUB200:IFA$=CHR$(133)THEN192 158 REM---TEST 160 IFR=RFANDC=CFTHEN156 162 IFPEEK(L)<>160THEN180 164 RM=RF-R:CM=CF-C:IFABS(RM)<>ABS(CM)THEN180 166 IFK=0ANDSGN(RM)<>SGN(P1-.5)THEN180 168 IFABS(RM)=1ANDM=0THENGOSUB228:GOTO114 170 IFABS(RM)<>2THEN180 172 RJ=RF-RM/2:CJ=CF-CM/2 174 LJ=BD(RJ*8+CJ) 176 IFPEEK(LJ)=CH(P2)THEN188 178 REM---ILLEGAL MOVE 180 IFMTHEN114 182 POKES2+4,33:FORA=1TO200:NEXT 184 POKES2+4,32:GOTO144 186 REM---JUMP CHECKER 188 GOSUB220:IFTL(P2)THEN152 190 REM---END OF GAME 192 Q$="PLAY AGAIN? [Y/N] ":SE$="YN":GOSUB326 194 IFA$="Y"THEN108 196 POKE832,0:SYS832 198 REM---JOYSTICK 200 JS=PEEK(56320) 202 GETA$:IFA$=CHR$(133)THENRETURN 204 R=R+SGN(JSAND1)-SGN(JSAND2)AND7 206 C=C+SGN(JSAND4)-SGN(JSAND8)AND7 208 POKEV,88+C*24AND255:POKEV+16,(PEEK(V+16)AND2)-(C=7) 210 POKEV+1,82+R*16 212 POKEV+21,3:FORA=1TO90:NEXT:POKEV+21,0 214 IFJSAND16THEN200 216 L=BD(R*8+C):RETURN 218 REM---JUMP 220 FORA=0TO2 222 POKELJ+A,160:POKELJ+40+A,160:NEXT 224 M=M+1:TL(P2)=TL(P2)-1:GOSUB314 226 REM---MOVE 228 FORZ=0TO2:POKEL+Z+S1,P1:POKEL+40+Z+S1,P1 230 POKEL+Z,PEEK(LF+Z):POKEL+40+Z,PEEK(LF+40+Z) 232 POKELF+Z,160:POKELF+40+Z,160:NEXT 234 IFR=7ORR=0THENK=1:POKEL+1,166:POKEL+41,167 236 POKES1+4,16:POKES1+4,17 238 RETURN 240 REM---FIND COMPUTER MOVE 242 KD=-(PEEK(BD(ZZ)+1)=166) 244 FORDR=0TO1+KD*2:M0=0 246 D=ZZ+D(P1,DR):IFD<0ORD>63THEN274 248 F1=PEEK(BD(D)):F2=0:DJ=D 250 D=D+D(P1,DR):IFD<0ORD>63THEN254 252 F2=PEEK(BD(D)) 254 IFF1<>160THEN264 256 M0=2:D=DJ:IFF2<>CH(P2)THENM0=3 258 IFF2=CH(P1)THENM0=4 260 IF(D<8ORD>55)ANDKD=0THENM0=5 262 GOTO270 264 IFF1<>CH(P2)ORF2<>160THEN274 266 M0=6:IFPEEK(BD(DJ)+1)=166THENM0=7 268 IF(D<8ORD>55)ANDKD=0THENM0=8 270 M0=M0+RND(1) 272 IFM0>M1THENM1=M0:L=BD(D):LF=BD(ZZ):LJ=BD(DJ):R=INT(D/8):QD=D 274 NEXT:RETURN 276 REM---SCREEN 278 POKEV+21,0:PRINTCHR$(147):POKETC,1 280 PRINTTAB(15)" CHECKERS ":ZZ=96 282 FORA=0TO63:FORZ=0TO2 284 POKEBD(A)+Z,ZZ:POKEBD(A)+40+Z,ZZ 286 NEXT 288 IF(AAND7)<7THENZZ=160+(ZZ=160)*64 290 NEXT 292 POKETC,0:A$="#" 294 FORA=1TO3:GOSUB360:NEXT 296 POKETC,1:A$="+" 298 FORA=6TO8:GOSUB360:NEXT 300 REM---GET PLAYERS 302 Q$="PLAYERS [0,1 OR 2] ":SE$="012":GOSUB326 304 PL(0)=0:PL(1)=0:A=VAL(A$) 306 IFATHENPL(1)=1:PL(0)=A-1 308 CY=22:CX=9:GOSUB354:PRINT"PRESS  F1 [146] TO END GAME" 310 TL(0)=12:TL(1)=12 312 REM---PRINT TOTALS 314 CY=12:CX=3:A=1:GOSUB318 316 CX=35:A=0 318 GOSUB354:POKETC,A 320 PRINTRIGHT$(STR$(TL(A)),2) 322 RETURN 324 REM---GET KEY 326 CY=22:GOSUB348 328 CX=(40-LEN(Q$))/2:GOSUB354 330 POKETC,1:PRINTQ$; 332 POKE198,0:POKE204,0 334 WAIT198,15:GETA$:Z=LEN(SE$) 336 IFA$=MID$(SE$,Z,1)THEN342 338 Z=Z-1:IFZTHEN336 340 GOTO334 342 POKE204,1:PRINTA$ 344 FORA=1TO500:NEXT 346 REM---CLEAR LINE 348 POKE214,CY-1:PRINT:PRINTSP$ 350 RETURN 352 REM---PLOT 354 POKE214,CY-1:PRINT:PRINTTAB(CX); 356 RETURN 358 REM---PRINT CHECKERS 360 CY=2+A*2:CX=8+(AAND1)*3:GOSUB354 362 FORZ=0TO3 364 PRINTCHR$(18);A$;"$%[157][157][157]*)([145]"; 366 NEXT 368 RETURN 370 REM---INITIALIZE 372 PRINTCHR$(8)CHR$(147) 374 POKE56334,PEEK(56334)AND254 376 POKE1,PEEK(1)AND251 378 FORA=0TO511:POKE14336+A,PEEK(53248+A):NEXT 380 POKE1,PEEK(1)OR4 382 POKE56334,PEEK(56334)OR1 384 POKE53272,(PEEK(53272)AND240)OR14 386 FORA=0TO31:READZ:POKE14616+A,Z:POKE14616+63-A,Z:NEXT 388 FORA=0TO7:POKE14616+64+A,PEEK(14616+A):NEXT 390 POKE53280,7:POKE53281,15 392 POKE53282,10:POKE53283,2 394 POKE53265,PEEK(53265)OR64 396 REM---SPRITE CURSORS 398 FORA=832TO959:POKEA,0:NEXT 400 FORA=835TO874STEP3:POKEA,192:POKEA+2,3:NEXT 402 FORA=0TO2:POKE832+A,255:POKE877+A,255:NEXT 404 FORA=896TO943:POKEA,255:NEXT 406 RETURN 408 REM---CHARACTER DATA 410 DATA0,0,0,3,7,15,15,31 412 DATA0,0,255,255,255,255,255,255 414 DATA0,0,0,192,224,240,240,248 416 DATA0,0,255,255,255,153,147,135